Imports capaLogica
Imports capaAccesoBD

Public Class MultiPlan
    Public Shared Sub agregarRubro(ByVal pporcentaje As Double, ByVal pidPlan As Integer, ByVal pnombre As String)
        Dim rubroEvaluacion As RubroEvaluacion = New RubroEvaluacion(pporcentaje, pidPlan, pnombre)

        Dim dt As New capaAccesoBD.CrystalGradesDataSetTableAdapters.QueriesTableAdapter
        dt.sp_RegistarRubro(pporcentaje, pidPlan, pnombre)

        Dim ds As New capaAccesoBD.CrystalGradesDataSet
        ds.AcceptChanges()

    End Sub

    Public Shared Sub modificarRubro(ByVal pporcentaje As Double, ByVal pidPlan As Integer, ByVal pnombre As String, ByVal pidRubro As Integer)
        Dim dt As New capaAccesoBD.CrystalGradesDataSetTableAdapters.QueriesTableAdapter
        dt.sp_ModificarRubro(pporcentaje, pidPlan, pnombre, pidRubro)
        Dim ds As New capaAccesoBD.CrystalGradesDataSet
        ds.AcceptChanges()
    End Sub
    Public Shared Function LevantarRubros(ByVal pidPlan As Integer) As DataTable


        Dim listaRubros As New capaAccesoBD.CrystalGradesDataSetTableAdapters.sp_LevantarRubrosTableAdapter
        Dim dt As New capaAccesoBD.CrystalGradesDataSet.sp_LevantarRubrosDataTable
        listaRubros.Fill(dt, pidPlan)

        Return dt
    End Function

    Public Shared Sub eliminarRubro(ByVal pidRubro As Integer)
        Dim dt As New capaAccesoBD.CrystalGradesDataSetTableAdapters.QueriesTableAdapter
        dt.sp_EliminarRubro(pidRubro)
        Dim ds As New capaAccesoBD.CrystalGradesDataSet
        ds.AcceptChanges()
    End Sub
    'Levanta los rubros asignados a un plan de evaluacion
    Public Shared Function LevantarRubrosObj(ByVal pidPlan As Integer) As RubroEvaluacion
        Dim planEvaluacion As New RubroEvaluacion

        Dim dt As New capaAccesoBD.CrystalGradesDataSet.sp_LevantarRubrosDataTable
        Dim listaRubros As New capaAccesoBD.CrystalGradesDataSetTableAdapters.sp_LevantarRubrosTableAdapter
        listaRubros.Fill(dt, pidPlan)

        For Each row As capaAccesoBD.CrystalGradesDataSet.sp_LevantarRubrosRow In dt.Rows
            Dim rubro As New RubroEvaluacion()
            rubro.Nombre = row.nombre
            rubro.Porcentaje = row.porcentaje
            rubro.IdPlan = row.idPlan
            planEvaluacion.Add(rubro)
        Next

        Return planEvaluacion
    End Function
    'Asignar el plan de evaluacion
    Public Shared Sub RegistrarPlanPorGrupo(ByVal idPlan As Integer, ByRef plan As ComponenteEvaluacion)

        Dim dt As New capaAccesoBD.CrystalGradesDataSetTableAdapters.QueriesTableAdapter
        Dim ds As New capaAccesoBD.CrystalGradesDataSet

        Dim listaRubros As List(Of ComponenteEvaluacion)
        listaRubros = plan.ListaRubros

        For Each rubro As ComponenteEvaluacion In listaRubros
            dt.sp_RegistarRubro(rubro.Porcentaje, idPlan, rubro.Nombre)
        Next

        ds.AcceptChanges()

    End Sub

    Public Shared Sub RegistrarRubroXEstudiante(ByVal pcarnet As String, ByVal prubro As RubroEvaluacion)

        Dim dt As New CrystalGradesDataSetTableAdapters.QueriesTableAdapter
        Dim ds As New capaAccesoBD.CrystalGradesDataSet

        Dim lista As List(Of ComponenteEvaluacion)
        Dim rubro As RubroEvaluacion
        lista = prubro.ListaRubros

        For Each rubro In lista
            dt.sp_RegistrarPlanXEstudiante(pcarnet, rubro.Porcentaje, rubro.Nombre)
        Next
        ds.AcceptChanges()
    End Sub

    Public Shared Function LevantarNotasXPorEstudiante(ByVal pcarnet As String, ByVal idGrupo As Integer) As ComponenteEvaluacion 'List(Of ComponenteEvaluacion)
        Dim notas As New RubroEvaluacion()
        'Dim notas As New List(Of ComponenteEvaluacion)

        Dim dtRubro As New capaAccesoBD.CrystalGradesDataSetTableAdapters.sp_LevantarRubroXEstudianteTableAdapter
        Dim ds As New capaAccesoBD.CrystalGradesDataSet.sp_LevantarRubroXEstudianteDataTable

        dtRubro.Fill(ds, pcarnet, idGrupo)

        For Each row As capaAccesoBD.CrystalGradesDataSet.sp_LevantarRubroXEstudianteRow In ds.Rows
            Dim rubro As New RubroEvaluacion(row.porcentaje, row.idRubroEstudiante, row.nombre)
            rubro.ListaRubros = MultiPlan.LevantarEvaluacionesXRubro(row.idRubroEstudiante)
            notas.Add(rubro)
        Next

        Return notas
    End Function

    Public Shared Function LevantarEvaluacionesXRubro(ByVal idRubro As Integer) As List(Of ComponenteEvaluacion)

        Dim dtEvalXRubro As New capaAccesoBD.CrystalGradesDataSetTableAdapters.sp_LevantarEvaluacionesXRubroTableAdapter
        Dim ds As New capaAccesoBD.CrystalGradesDataSet.sp_LevantarEvaluacionesXRubroDataTable

        dtEvalXRubro.Fill(ds, idRubro)

        Dim listaEvaluaciones As New List(Of ComponenteEvaluacion)

        For Each row As capaAccesoBD.CrystalGradesDataSet.sp_LevantarEvaluacionesXRubroRow In ds.Rows
            Dim evaluacion As New Evaluacion()
            evaluacion.Nombre = row.nombre
            evaluacion.Porcentaje = row.nota
            evaluacion.IdPlan = row.idEvaluacion
            listaEvaluaciones.Add(evaluacion)
        Next

        Return listaEvaluaciones
    End Function

    Public Shared Sub ModificarEvaluacion(ByVal nota As Double, ByVal idEvaluacion As Integer)

        Dim dt As New capaAccesoBD.CrystalGradesDataSetTableAdapters.QueriesTableAdapter
        dt.sp_ModificarEvaluacion(nota, idEvaluacion)
        Dim ds As New capaAccesoBD.CrystalGradesDataSet
        ds.AcceptChanges()
    End Sub
    'HACK registrar plan por estudiante
    Public Shared Sub RegistrarPlanGrupalPorEstudiante(ByVal idGrupo As Integer, ByVal carnet As String)

        Dim dt As New CrystalGradesDataSetTableAdapters.QueriesTableAdapter
        Dim ds As New capaAccesoBD.CrystalGradesDataSet

        Dim grupo As Grupo = MultiGrupo.BuscarGrupo(idGrupo)
        Dim planGrupal As ComponenteEvaluacion = grupo.PlanEvaluacion

        For Each rubro As ComponenteEvaluacion In planGrupal.ListaRubros
            dt.sp_AsignarPlanGrupalPorEstudiante(carnet, rubro.Porcentaje, rubro.Nombre, idGrupo)
        Next

        ds.AcceptChanges()

    End Sub

End Class
